#include<bits/stdc++.h>
#define int long long
using namespace std;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[1<<23],*p1=buf,*p2=buf;
int read(){char c=getchar();int p=0,flg=1;while(c<'0'||c>'9'){if(c=='-') flg=-1;c=getchar();}while(c>='0'&&c<='9'){p=p*10+c-'0';c=getchar();}return p*flg;}
int n,len,a[400010],b[400010],vis[400010];struct seg{int l,r,siz,sum,pre,suf,tag,_tag;}t[1600010];
#define lson now<<1
#define rson now<<1|1
void pushup(int now){t[now].siz=t[lson].siz+t[rson].siz;t[now].sum=t[lson].sum+t[rson].sum;t[now].pre=t[lson].pre+t[rson].pre;t[now].suf=t[lson].suf+t[rson].suf;}
void build(int now,int l,int r){
	t[now]={l,r};if(l==r) return ;
	int mid=(l+r)>>1;build(lson,l,mid);build(rson,mid+1,r);
}
void puttag(int now,int v){t[now].pre+=t[now].siz*v;t[now].tag+=v;}
void put_tag(int now,int v){t[now].suf+=t[now].siz*v;t[now]._tag+=v;}
void pushdown(int now){
	if(t[now].tag){puttag(lson,t[now].tag);puttag(rson,t[now].tag);t[now].tag=0;}
	if(t[now]._tag){put_tag(lson,t[now]._tag);put_tag(rson,t[now]._tag);t[now]._tag=0;}
}
int query(int now,int l,int r){
	if(l>r) return 0;if(l<=t[now].l&&t[now].r<=r) return t[now].siz;
	pushdown(now);int mid=(t[now].l+t[now].r)>>1,res=0;if(l<=mid) res+=query(lson,l,r);if(mid<r) res+=query(rson,l,r);return res;
}
int qsum(int now,int l,int r){
	if(l>r) return 0;if(l<=t[now].l&&t[now].r<=r) return t[now].sum;
	pushdown(now);int mid=(t[now].l+t[now].r)>>1,res=0;if(l<=mid) res+=qsum(lson,l,r);if(mid<r) res+=qsum(rson,l,r);return res;
}
void modify(int now,int x,int v){
	if(t[now].l==t[now].r){t[now].siz=v;t[now].sum=v*b[t[now].l];t[now].pre=v*(qsum(1,1,t[now].l-1)+b[t[now].l]);t[now].suf=v*(qsum(1,t[now].l+1,len)+b[t[now].l]);return ;}
	pushdown(now);int mid=(t[now].l+t[now].r)>>1;if(x<=mid) modify(lson,x,v);else modify(rson,x,v);pushup(now);
}
void modify(int now,int l,int r,int v){
	if(l>r) return ;if(l<=t[now].l&&t[now].r<=r){puttag(now,v);return ;}
	pushdown(now);int mid=(t[now].l+t[now].r)>>1;if(l<=mid) modify(lson,l,r,v);if(mid<r) modify(rson,l,r,v);pushup(now);
}
void _modify(int now,int l,int r,int v){
	if(l>r) return ;if(l<=t[now].l&&t[now].r<=r){put_tag(now,v);return ;}
	pushdown(now);int mid=(t[now].l+t[now].r)>>1;if(l<=mid) _modify(lson,l,r,v);if(mid<r) _modify(rson,l,r,v);pushup(now);
}
int qpre(int now,int l,int r){
	if(l>r) return 0;if(l<=t[now].l&&t[now].r<=r) return t[now].pre;
	pushdown(now);int mid=(t[now].l+t[now].r)>>1,res=0;if(l<=mid) res+=qpre(lson,l,r);if(mid<r) res+=qpre(rson,l,r);return res;
}
int qsuf(int now,int l,int r){
	if(l>r) return 0;if(l<=t[now].l&&t[now].r<=r) return t[now].suf;
	pushdown(now);int mid=(t[now].l+t[now].r)>>1,res=0;if(l<=mid) res+=qsuf(lson,l,r);if(mid<r) res+=qsuf(rson,l,r);return res;
}
signed main(){
	freopen("kte.in","r",stdin);freopen("kte.out","w",stdout);
	n=read();for(int i=1;i<=n;i++) a[i]=b[i]=read();sort(b+1,b+1+n);len=unique(b+1,b+1+n)-b-1;for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+1+len,a[i])-b;
	build(1,1,len);vector<int>e;
	for(int i=1;i<=n;i++){
		if(vis[a[i]]){e.erase(lower_bound(e.begin(),e.end(),a[i]));modify(1,a[i],0);modify(1,a[i]+1,len,-b[a[i]]);_modify(1,1,a[i]-1,-b[a[i]]);}
		else{e.insert(lower_bound(e.begin(),e.end(),a[i]),a[i]);modify(1,a[i],1);modify(1,a[i]+1,len,b[a[i]]);_modify(1,1,a[i]-1,b[a[i]]);}vis[a[i]]^=1;
		if(e.size()==1){cout<<0<<'\n';continue;}
		int l=2,r=e.size()-1,resl=1,resr=e.size(),mid,ans=0;
		auto check=[&](int x){
			if(qsum(1,e[e.size()-x+1],len)>qsum(1,1,e[x-1])) return false;
			return qsum(1,e[e.size()-x],len)-qsum(1,1,e[x-2])>=qsum(1,e[e.size()-x-1],len)-qsum(1,1,e[x-1]);
		};while(l<=r) check(mid=l+r>>1)?resl=mid,l=mid+1:r=mid-1;ans+=qsuf(1,e[e.size()-resl],len)-qpre(1,1,e[resl-1]);
		if(resl==e.size()-1){cout<<ans<<'\n';continue;}
		l=2;r=e.size()-1;
		auto _check=[&](int x){
			if(qsum(1,e[e.size()-x+1],len)>qsum(1,1,e[x-1])) return false;
			return qsum(1,e[e.size()-x],len)-qsum(1,1,e[x-2])<=qsum(1,e[e.size()-x-1],len)-qsum(1,1,e[x-1]);
		};while(l<=r) _check(mid=l+r>>1)?resr=mid,r=mid-1:l=mid+1;ans+=qsuf(1,1,e[e.size()-resr])-qpre(1,e[resr-1],len);
		if(resl+1<=resr-1) ans+=qsum(1,e[e.size()-resr+1],len)-qsum(1,e[e.size()-resl],len);
		cout<<ans<<'\n';
	}
	return 0;
}